package cn.dglydrpy.study.algorithm.od;

import java.util.Scanner;

/**
 * @author Yyy
 * @date 2024/11/10 10:15
 * @description  前缀和数组
阿里巴巴发现藏宝地有编号 0 到 N 的箱子，每个箱子有数字，可能存在黄金宝箱，
其满足排在它之前的所有箱子数字和等于排在它之后的所有箱子数字和，第一个箱子左边数字和为 0，最后一个宝箱右边数字和为 0。
找出第一个满足前后数字和相等的黄金宝箱编号，若不存在则返回 -1。
 
 输入：
 1,2,5,3,0
 输出：
 2
 */
public class Od0031_GoldChest {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNextLine()){
            String[] split = scanner.nextLine().split(",");
            int[] arr = new int[split.length];
            for(int i=0;i<arr.length;i++){
                arr[i] = Integer.valueOf(split[i]);
            }
            
            int ans = myAnswer(arr);
            System.out.println(ans);
        }
    }

    private static int myAnswer(int[] arr) {
        if(arr == null || arr.length == 0){
            return -1;
        }
        int ans = -1;
        
        int sumPre[] = new int[arr.length];
        int sum = 0;
        for(int i = 0;i<arr.length;i++){
            sum += arr[i];
            sumPre[i] = sum; 
        }
        
        for(int i = 0; i<arr.length;i++){
            if(sumPre[i] - arr[i] == sumPre[arr.length-1] - sumPre[i]){
                return i;
            }
        }
        
        return ans;
    }
}
